home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 005 / budget.arc / NUMERIC.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1985-06-26  |  1.3 KB  |  56 lines

  1. 10  CLS
  2. 20  KEY OFF
  3. 30  PRINT "NUMERIC BASE CONVERSION"
  4. 40  PRINT
  5. 50  N$="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  6. 60  REM  -- VARIABLE 'M' IS THE HIGHEST
  7. 70  REM  -- BASE YOU MAY CONVERT FROM / TO
  8. 80  M=LEN(N$)
  9. 90  PRINT "FROM BASE (0 TO END) ";
  10. 100  INPUT B1
  11. 110  REM  -- END PROGRAM?
  12. 120  IF B1=0 THEN 550
  13. 130  REM  -- TEST FOR VALID INPUT BASE
  14. 140  IF B1>1 THEN 170
  15. 150  PRINT "BASES 2 THROUGH";M;"ONLY. SELECT AGAIN. "
  16. 160  GOTO 90
  17. 170  IF B1>M THEN 150
  18. 180  PRINT "TO BASE ";
  19. 190  INPUT B2
  20. 200  IF B2=0 THEN 90
  21. 210  REM  -- TEST FOR VALID OUTPUT BASE
  22. 220  IF B2>1 THEN 250
  23. 230  PRINT "BASES 2 THROUGH";M;"ONLY. SELECT AGAIN."
  24. 240  GOTO 180
  25. 250  IF B2>M THEN 230
  26. 260  PRINT "VALUE ";
  27. 270  INPUT V$
  28. 280  IF V$="0" THEN 180
  29. 290  REM  -- FIRST, CONVERT INPUT VALUE TO BASE 10
  30. 300  L=LEN(V$)
  31. 310  D=0:BAD=0
  32. 320  FOR I=1 TO L
  33. 330  FOR J=1 TO B1
  34. 340  IF MID$(V$,I,1)>MID$(N$,B1,1) THEN BAD=-1
  35. 350  IF MID$(N$,J,1)<>MID$(V$,I,1) THEN 370
  36. 360  D=D+INT((J-1)*(B1^(L-I))+0.5)
  37. 370  NEXT J
  38. 380  NEXT I
  39. 390  IF BAD THEN 510
  40. 400  REM  -- NOW CONVERT BASE 10 VALUE TO
  41. 410  REM  -- DESIRED OUTPUT
  42. 420  O$=""
  43. 430  X=INT(((D/B2)-INT(D/B2))*B2+1.5)
  44. 440  O$=MID$(N$,X,1)+O$
  45. 450  D=INT(D/B2)
  46. 460  IF D>0 THEN 430
  47. 470  REM  -- OUTPUT THE RESULT
  48. 480  PRINT V$;" BASE";B1;"IS ";O$;" BASE";B2
  49. 490  REM  -- LOOP BACK TO ENTER ANOTHER VALUE
  50. 500  GOTO 260
  51. 510  PRINT "INVALID ENTRY:"
  52. 520  PRINT "THERE IS NO SUCH NUMBER '"V$"' (SIC) IN BASE"B1
  53. 530  PRINT
  54. 540  GOTO 90
  55. 550  END
  56.